﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Tecnosop.Dominio;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace Tecnosop.WebUI.Models
{
    public class EquipoYConsignacionesViewModel
    {
        //Item

        [DisplayName("Código ítem")]
        [Required(ErrorMessage = "Ingrese código del ítem")]
        public int CODIGO_ITEM { get; set; }

        [DisplayName("Tipo")]
        [Required(ErrorMessage = "Seleccione un tipo")]
        public string TIPO { get; set; }

        [DisplayName("Precio")]
        [Required(ErrorMessage = "Ingrese precio")]
        public Nullable<int> PRECIO { get; set; }

        [DisplayName("Marca")]
        [Required(ErrorMessage = "Ingrese marca")]
        public string MARCA { get; set; }

        [DisplayName("Modelo")]
        [Required(ErrorMessage = "Ingrese modelo")]
        public string MODELO { get; set; }

        //Equipo

        [DisplayName("Operación color")]
        [Required(ErrorMessage = "Seleccione un valor")]
        public bool OPERACION_COLOR { get; set; }

        [DisplayName("Operación blanco y negro")]
        [Required(ErrorMessage = "Seleccione un valor")]
        public bool OPERACION_BN { get; set; }

        public IEnumerable<EquipoEnConsignacion> Consignaciones { get; set; }
        //[UIHint("Consignaciones")]
        //public IEnumerable<CONSIGNACION_EQUIPO> Consignaciones { get; set; }
    }

    public class EquipoViewModel
    {
        //Item

        [DisplayName("Código ítem")]
        [Required(ErrorMessage = "Ingrese código del ítem")]
        public int CODIGO_ITEM { get; set; }

        [DisplayName("Tipo")]
        [Required(ErrorMessage = "Seleccione un tipo")]
        public string TIPO { get; set; }

        //[DisplayName("Unidad medición")]
        //[Required(ErrorMessage = "Ingrese unidad medición")]
        //public string UNIDAD { get; set; }

        [DisplayName("Precio")]
        [Required(ErrorMessage = "Ingrese un precio")]
        public Nullable<int> PRECIO { get; set; }

        [DisplayName("Marca")]
        [Required(ErrorMessage = "Ingrese una marca")]
        public string MARCA { get; set; }

        [HiddenInput]
        public string MARCA_ORIGINAL { get; set; }

        [DisplayName("Modelo")]
        [Required(ErrorMessage = "Ingrese un modelo")]
        [Remote("ValidaMarcaYModeloUnicos", "Equipo", AdditionalFields = "MARCA, MARCA_ORIGINAL, MODELO_ORIGINAL", ErrorMessage = "La combinacion marca y modelo ya existen.")]
        public string MODELO { get; set; }

        [HiddenInput]
        public string MODELO_ORIGINAL { get; set; }
        //Equipo

        [DisplayName("Operación color")]
        [Required(ErrorMessage = "Seleccione un valor")]
        public bool OPERACION_COLOR { get; set; }

        [DisplayName("Operación blanco y negro")]
        [Required(ErrorMessage = "Seleccione un valor")]
        public bool OPERACION_BN { get; set; }
    }

    public class ResultadoBusquedaEquipoViewModel
    {
        public IEnumerable<EQUIPO> Resultado { get; set; }
        public string CriterioParaOrdenar { get; set; }
    }

    public class EquipoEnConsignacion
    {
        [DisplayName("Número de serie")]
        [Required(ErrorMessage = "Ingrese un {0}")]
        [Remote("ValidaSerieUnico", "Equipo", AdditionalFields = "NUMERO_SERIE_ORIGINAL", ErrorMessage = "El número de serie ya ha sido consignado.")]
        public string NUMERO_SERIE { get; set; }

        [HiddenInput]
        //[ReadOnly(true)]
        public string NUMERO_SERIE_ORIGINAL { get; set; }

        [DisplayName("Código equipo")]
        public int CODIGO_ITEM { get; set; }

        [DisplayName("Código de consignación")]
        [Remote("ValidaConsignacionUnica", "Equipo", AdditionalFields = "CONSIGNACION_ORIGINAL", ErrorMessage = "El código de consignación ya está siendo usado.")]
        public int CONSIGNACION { get; set; }

        [HiddenInput]
        //[ReadOnly(true)]
        public int? CONSIGNACION_ORIGINAL { get; set; }
    }

    public class EquipoEnConsignacion2
    {
        [DisplayName("Número de serie")]
        [Required(ErrorMessage = "Ingrese un {0}")]
        [Remote("ValidaSerieUnico", "Equipo", ErrorMessage = "El número de serie ya ha sido consignado.")]
        public string NUMERO_SERIE { get; set; }

        [DisplayName("Código equipo")]
        public int CODIGO_ITEM { get; set; }

        [DisplayName("Código de consignación")]
        [Remote("ValidaConsignacionUnica", "Equipo", ErrorMessage = "El código de consignación ya está siendo usado.")]
        public int CONSIGNACION { get; set; }
        
        
        public int? Convenio { get; set; }

        public string Dirección { get; set; }
    }



    //public class BusquedaEquipoViewModel
    //{
    //    [DisplayName("Criterios de búsqueda")]
    //    [UIHint("Enum")]
    //    [DataType("Criterios")]
    //    public CriteriosDeBusquedaItem Criterios { get; set; }

    //    [Required(ErrorMessage = "Debe ingresar algún término para la búsqueda")]
    //    public string AreaBusqueda { get; set; }
    //}
}